// 这里的vm，就是我们在vue文件里面的this，所以我们能在这里获取vuex的变量，比如存放在里面的token
// 同时，我们也可以在此使用getApp().globalData，如果你把token放在getApp().globalData的话，也是可以使用的
const install = (Vue, vm) => {
	// 请求设置
	Vue.prototype.$u.http.setConfig({
		// 请求的根域名
        baseUrl: vm.$config.domain
	});
	// 请求拦截
	Vue.prototype.$u.http.interceptor.request = (config) => {
		// 配置Token参数
		config.header.Token = vm.vuex_token;
		return config;
	}
	// 响应拦截，判断状态码是否通过
	Vue.prototype.$u.http.interceptor.response = (response) => {
        if(response.statusCode == 200){
            const res = response.data
            console.log("打印请求::" +  JSON.stringify(res));
            if(res.code != 20000) {
                // 待处理其他异常
                if (res.code === 1000 || res.code === 1001 || res.code === 1002) {
                    switch (res.code) {
                      case 1000:
                        res.msg = '账号已过期,请重新登陆'
                        break
                      case 1001:
                        res.msg = '账号不存在,请重新登陆'
                        break
                      case 1002:
                        res.msg = '此账号已被封禁'
                        break
                      default:
                        res.msg = '错误代码:' + res.code
                    }
                    // 提示操作
                    uni.showModal({
                    	title:"提示",
                    	content: res.msg,
                    	showCancel:false,
                    	success: (res) => {
                            // 重置登录页
							vm.$u.route({
							    type: 'reLaunch',
							    url:"pages/public/login"
							})
                    	}
                    });
					return false
                }else{
					// 提示信息
					vm.$u.toast(res.msg || 'Error');
					return false
				}
                
            } else{
                 return res.data
            };
        }else{
            // 服务器状态码不为200,则提示
            if (response) {
              switch (response.statusCode) {
                case 400:
                  response.msg = '错误请求'
                  break
                case 401:
                  response.msg = '未授权,请重新登录'
                  break
                case 403:
                  response.msg = '拒绝访问'
                  break
                case 404:
                  response.msg = '请求错误,未找到该资源'
                  break
                case 405:
                  response.msg = '请求方法未允许'
                  break
                case 408:
                  response.msg = '请求超时'
                  break
                case 500:
                  response.msg = '服务器异常'
                  break
                case 502:
                  response.msg = '网络错误'
                  break
                case 504:
                  response.msg = '网络超时'
                  break
                case 505:
                  response.msg = 'HTTP版本不受支持'
                  break
                default:
                  response.msg = '错误代码:' + response.statusCode
              }
            } else {
              response.msg = '网络出现问题,请稍后再试'
            }
            // 提示信息
            vm.$u.toast(response.msg || 'Error');
            return false;
        }

	}
}

export default {
	install
}